#pragma once

extern bool IsValidMove(int position[10][9], int nFromX, int nFromY, int nToX, int nToY);
extern int CreatePossibleMove(int position[10][9], int nPly,int nSide);

extern CHESSMOVE m_MoveList[10][80];
extern void Gen_KingMove(int position[10][9], int i, int j, int nPly);
extern void Gen_RBishopMove(int position[10][9], int i, int j, int nPly);
extern void Gen_BBishopMove(int position[10][9], int i, int j, int nPly);
extern void Gen_ElephantMove(int position[10][9], int i, int j, int nPly);
extern void Gen_HorseMove(int position[10][9],  int i, int j, int nPly);
extern void Gen_CarMove(int position[10][9],  int i, int j, int nPly);
extern void Gen_RPawnMove(int position[10][9],  int i, int j, int nPly);
extern void Gen_BPawnMove(int position[10][9], int i, int j, int nPly);
extern void Gen_CanonMove(int position[10][9], int i, int j, int nPly);

extern int AddMove(int nFromX,int nToX, int nFromY, int nToY,int nPly);
extern int m_nMoveCount;